#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
void mostrarvector(string mat[]);
void guardarvector(string mat[],string caracter);
void asd(string vec[],string vecc[],int f,int c);
int  recorrervector(string vec[],int h);
void hundido(string vec[]);
int main()
{
    string tablero1[10];
    string tablero1cop[10];
    string tablero2[10];
    string tablero2cop[10];
    string linea1,linea2;
    int i,j,f,c
    ;
    i=0;
    j=0;
    ifstream tab1("jugador1.algo.txt");
    ifstream tab2("jugador2.algo.txt");

    guardarvector(tablero1cop,"XXXXXXXXXX");
    guardarvector(tablero2cop,"XXXXXXXXXX");



    while(getline(tab1,linea1)&& getline(tab2,linea2))
    {
           tablero1[i]=linea1;
           tablero2[i]=linea2;
           i++;
    }

    string p1,p2;

    cout<<"INGRESE NOMBRE DEL JUGADOR 1"<<endl;
    cin>>p1;
    cout<<"INGRESE NOMBRE DEL JUGADOR 2"<<endl;
    cin>>p2;

    int h;
    h=0;


    while(h<18)
    {
        cout<<"Tablero 1"<<endl;
        hundido(tablero1cop);
        mostrarvector(tablero1cop);
        cout<<"**********"<<endl;
        cout<<"Tablero 2"<<endl;
        hundido(tablero2cop);
        mostrarvector(tablero2cop);

        cout<<"Su turno "<<p1<<endl;
        cout<<"Fila:";cin>>f;
        cout<<"Columna:";cin>>c;
        i=0;

            while(f>10||f<=0)
            {
                cout<<"Fila Incorrecta,vuelva a ingresarla:";cin>>f;
            }


            while(c>10||c<=0)
            {
                cout<<"Columna Incorrecta,vuelva a ingresarla:";cin>>c;
            }

            f--;
            c--;
            while(tablero2cop[f][c]!='X')
            {
                cout<<"Posicion ya elegida,vuelva a seleccionar otra"<<endl;
                cout<<"Fila:";cin>>f;
                cout<<"Columna:";cin>>c;
                f--;
                c--;
            }

            hundido(tablero2cop);
            asd(tablero2,tablero2cop,f,c);



        if(recorrervector(tablero2cop,h)==1)
        {
            cout<<"GANASTE "<<p1<<"!!!";
            return 1;
        }

        cout<<"Tablero 1"<<endl;
        hundido(tablero1cop);
        mostrarvector(tablero1cop);
        cout<<"**********"<<endl;

        cout<<"Tablero 2"<<endl;
        hundido(tablero2cop);
        mostrarvector(tablero2cop);

        cout<<"Su turno "<<p2<<endl;
        cout<<"Fila:";cin>>f;
        cout<<"Columna:";cin>>c;
        i=0;
        while(f>10||f<=0)
            {
                cout<<"Fila Incorrecta,vuelva a ingresarla:";cin>>f;
            }

            while(c>10||c<=0)
            {
                cout<<"Columna Incorrecta,vuelva a ingresarla:";cin>>c;
            }
            f--;
            c--;
            while(tablero1cop[f][c]!='X')
            {
                cout<<"Posicion ya elegida,vuelva a seleccionar otra"<<endl;
                cout<<"Fila:";cin>>f;
                cout<<"Columna";cin>>c;
                f--;
                c--;
            }


            asd(tablero1,tablero1cop,f,c);
            hundido(tablero1cop);

        if(recorrervector(tablero1cop,h)==1)
        {
            cout<<"GANASTE "<<p2<<"!!!";
            return 1;
        }

    }


}

void mostrarvector(string vec[])
{
    int i;
    for(i=0;i<10;i++)
    {
        cout<<vec[i]<<endl;
    }
}
void guardarvector(string vec[],string caracter)
{
    int i;
    for(i=0;i<10;i++)
    {
        vec[i]=caracter;
    }
}

void asd(string vec[],string vecc[],int f,int c)
{
        if(vec[f][c]=='1')
        {
            vecc[f][c]='1';
        }else if(vec[f][c]=='2')
        {
            vecc[f][c]='2';
        }else if(vec[f][c]=='3')
        {
            vecc[f][c]='3';
        }else if(vec[f][c]=='4')
        {
            vecc[f][c]='4';
        }else
        {
            vecc[f][c]=' ';
        }
}

int recorrervector(string vec[],int h)
{
    int i,z,flag;
    flag=0;
    h=0;
    i=0;
    z=0;
        while(i<10)
        {
            while(z<10)
            {
                cout<<"HOLA"<<endl;
                if(vec[i][z]=='H')
                {
                    h++;
                }
                z++;
            }
            z=0;
            i++;

        }

    cout<<"H===="<<h;
    if(h==18)
    {

       return 1;
    }else
    {
        return -1;
    }

}

void hundido(string vec[])
{
    int i,z;
    i=0;
    z=0;
    int hundido1,hundido2,hundido3,hundido4;
    hundido1=0;
    hundido2=0;
    hundido3=0;
    hundido4=0;


    while(i<10)
    {
        z=0;
        while(z<10)
        {

            if (vec[i][z]=='X')
            {
                hundido1=0;
                hundido2=0;
                hundido3=0;
                hundido4=0;
            }else if(vec[i][z]=='1')
            {

                hundido1++;
                hundido2=0;
                hundido3=0;
                hundido4=0;


            }else if(vec[i][z]=='2')
            {
                hundido2++;
                hundido1=0;
                hundido3=0;
                hundido4=0;
            }else if(vec[i][z]=='3')
            {
                hundido3++;
                hundido1=0;
                hundido2=0;
                hundido4=0;

            }else if(vec[i][z]=='4')
            {
                hundido4++;
                hundido1=0;
                hundido2=0;
                hundido3=0;

            }


            if(hundido1==3)
            {

                    vec[i][z]='H';
                    vec[i][z-1]='H';
                    vec[i][z-2]='H';
            }

            if(hundido3==3)
            {
                    vec[i][z]='H';
                    vec[i][z-1]='H';
                    vec[i][z-2]='H';
            }

            if(hundido4==3)
            {
                    vec[i][z]='H';
                    vec[i][z-1]='H';
                    vec[i][z-2]='H';
            }

            if(hundido2==2)
            {
                    vec[i][z]='H';
                    vec[i][z-1]='H';

            }




            z++;
        }
        i++;
    }

    i=0;
    z=0;
    hundido1=0;
    hundido2=0;
    hundido3=0;
    hundido4=0;

    while(z<10)
    {
        i=0;
        while(i<10)
        {

            if (vec[i][z]=='X')
            {
                hundido1=0;
                hundido2=0;
                hundido3=0;
                hundido4=0;
            }else if(vec[i][z]=='1')
            {

                hundido1++;
                hundido2=0;
                hundido3=0;
                hundido4=0;


            }else if(vec[i][z]=='2')
            {
                hundido2++;
                hundido1=0;
                hundido3=0;
                hundido4=0;
            }else if(vec[i][z]=='3')
            {
                hundido3++;
                hundido1=0;
                hundido2=0;
                hundido4=0;

            }else if(vec[i][z]=='4')
            {
                hundido4++;
                hundido1=0;
                hundido2=0;
                hundido3=0;

            }


            if(hundido1==3)
            {

                    vec[i][z]='H';
                    vec[i-1][z]='H';
                    vec[i-2][z]='H';
            }

            if(hundido3==3)
            {
                    vec[i][z]='H';
                    vec[i-1][z]='H';
                    vec[i-2][z]='H';
            }

            if(hundido4==3)
            {
                    vec[i][z]='H';
                    vec[i-1][z]='H';
                    vec[i-2][z]='H';
            }

            if(hundido2==2)
            {
                    vec[i][z]='H';
                    vec[i-1][z]='H';

            }




            i++;
        }
        z++;
    }
}
